IF exists(SELECT * FROM dbo.sysobjects WHERE name='r_XMLtrimesterlijstCijfers' AND xtype='P') 
BEGIN
	DROP PROCEDURE r_XMLtrimesterlijstCijfers
END
GO

CREATE       procedure r_XMLtrimesterlijstCijfers(@klas varchar(5), @school varchar(50), 
		@periode int, @jaar int)
as
set nocount on

set @klas = isNull(@klas,'')
set @school = isNull(@school,'')
set @periode = isNull(@periode,0)
set @jaar = isNull(@jaar,0)


create table #tussen( tekst varchar(5000))
create table #vakken( volgNummer char(2),vak varchar(2))
create table #cijfers(inschrijvingsNr char(7),vak varchar(3), DW int, EX int, TOT int)
create table #groepen(groepscode varchar(5))

-- De vakken worden ingevuld:

insert into #vakken(volgNummer,vak)
select distinct volgnummer,vakcode 
  from leraars.dbo.alleKlasVakcodes(@klas)
  order by volgnummer

-- De cijfers worden ingevuld:
if @periode=1  
  begin
    insert into #cijfers(inschrijvingsNr,vak,DW,EX,TOT)
    select inschrijvingsNr,vakcode,DW1,EX1,TOT1
    from R_trimestercijfersVoorRapport where klas = @klas

    insert into #cijfers(inschrijvingsNr,vak,DW,EX,TOT)
    select inschrijvingsNr,'TOT',null,null,TOT1
    from R_trimesterTotaalVoorRapport where klas = @klas
  end

if @periode=2
  begin
    insert into #cijfers(inschrijvingsNr,vak,DW,EX,TOT)
    select inschrijvingsNr,vakcode,DW2,EX2,TOT2
    from R_trimestercijfersVoorRapport where klas = @klas

    insert into #cijfers(inschrijvingsNr,vak,DW,EX,TOT)
    select inschrijvingsNr,'TOT',null,null,TOT2
    from R_trimesterTotaalVoorRapport where klas = @klas
  end

if @periode=3
  begin
    insert into #cijfers(inschrijvingsNr,vak,DW,EX,TOT)
    select inschrijvingsNr,vakcode,DW3,EX3,TOT3
    from R_trimestercijfersVoorRapport where klas = @klas

    insert into #cijfers(inschrijvingsNr,vak,DW,EX,TOT)
    select inschrijvingsNr,'TOT',null,null,TOT3
    from R_trimesterTotaalVoorRapport where klas = @klas
  end

-----------------  OPBOUW DOCUMENT  -----------------------------------

-- De juiste stijl-pagina wordt aan de XML-pagina gelinkt.
insert into #tussen(tekst)
values('<?xml version="1.0"  encoding="ISO-8859-1" ?>')
insert into #tussen(tekst)
values('<?xml-stylesheet type="text/xsl" href="trimLijst.xsl" ?>')

-- De titel en de 
insert into #tussen(tekst)

values('<trimLijst><hoofding><titel>' + @klas + ' Semesterresultaten ' 
	+ convert(varchar(2),@periode) 
	+ '</titel>')
insert into #tussen(tekst)

values('<school>' + @school + '</school>')
insert into #tussen(tekst)
values('<klas>' + @klas + '</klas>')
insert into #tussen(tekst)
values('<comBestand>' + @klas + 'ct' + convert(varchar(2), @periode) + '.xml</comBestand>')
insert into #tussen(tekst)
values('<periode>Semesterresultaten ' + convert(varchar(2),@periode) 
	+ ' - schooljaar ' + convert(varchar(4),@jaar) + ' - ' +
	+ convert(varchar(4),@jaar + 1) + '</periode>')
insert into #tussen(tekst)
values('<per>' + convert(varchar(2),@periode) + '</per>')

insert into #tussen(tekst)
values('<vakken>')

insert into #tussen(tekst)
select '<vak>' + vak + '</vak>'
from #vakken order by volgNummer

insert into #tussen(tekst)
values('<vak>TOT</vak></vakken>')

insert into #tussen(tekst)
values('</hoofding><leerlingen>')

--Een cursor die over de leerlingen van de klas loopt.
declare @inschrijvingsNr char(7)
declare @achternaam varchar(50)
declare @voornaam varchar(50)

declare deCursor cursor local for 
  select inschrijvingsNr,achternaam,voornaam
  from leerlingen.dbo.leerlingen
  where klas= @klas 
  order by klasNr
for read only
open deCursor
fetch next from deCursor into @inschrijvingsNr,@achternaam,@voornaam
while (@@fetch_status=0)
begin

  -- De naam van de leerling wordt ingevoegd
  insert into #tussen(tekst)
  values('<lln><naam>' + isNull(@voornaam,'') + ' ' + isNull(@achternaam,'') + '</naam>')

  -- De vakresultaten van de leerling worden ingevoegd
  insert into #tussen(tekst)
  select '<vak code="' + v.vak + '"><d>' 
	+ case when p.dw is not null and (p.dw >= 0) 
	       then convert(varchar(5),p.dw) else '' end 
	+ '</d><e>'
	+ case when p.ex is not null and (p.ex >= 0) 
	       then convert(varchar(5),p.ex) else '' end 
	+ '</e><t>'
	+ case when p.tot is not null and (p.tot >= 0) 
	       then convert(varchar(5),p.tot) else '' end 
	+ '</t></vak>'
  from #vakken as v 
	left join (select * from #cijfers where inschrijvingsNr = @inschrijvingsNr) as p
	on v.vak = p.vak
  order by v.volgNummer

  insert into #tussen(tekst)
  select '<vak code="TOT"><d>' 
	+ case when dw is not null and (dw >= 0) 
	       then convert(varchar(5),dw) else '' end 
	+ '</d><e>'
	+ case when ex is not null and (ex >= 0) 
	       then convert(varchar(5),ex) else '' end 
	+ '</e><t>'
	+ case when tot is not null and (tot >= 0) 
	       then convert(varchar(5),tot) else '' end 
	+ '</t></vak>'
  from #cijfers 
  where inschrijvingsNr = @inschrijvingsNr and vak = 'TOT'

  -- Afsluiting
  insert into #tussen(tekst)
  values('</lln>')
  
   fetch next from deCursor into @inschrijvingsNr,@achternaam,@voornaam
end

-- Opstellen van de gemiddeldes
  insert into #tussen(tekst)
  values('</leerlingen><gemiddelde>')

  insert into #tussen(tekst)
  select '<vak code="' + v.vak + '"><d>' 
	+ case when g.dwProcent is not null and (g.dwProcent >= 0) 
	       then convert(varchar(5),g.dwProcent) else '' end 
	+ '</d><e>'
	+ case when g.exProcent is not null and (g.exProcent >= 0) 
	       then convert(varchar(5),g.exProcent) else '' end 
	+ '</e><t>'
	+ case when g.totProcent is not null and (g.totProcent >= 0) 
	       then convert(varchar(5),g.totProcent) else '' end 
	+ '</t></vak>'
  from #vakken as v
	left join studiebegeleiding.dbo.r_trimesterVakGemiddelde(@klas,@periode) as g
	on v.vak = g.vak
	order by v.volgNummer

  insert into #tussen(tekst)
  select '<vak code="TOT"><d>' 
	+ case when dwProcent is not null and (dwProcent >= 0) 
	       then convert(varchar(5),dwProcent) else '' end 
	+ '</d><e>'
	+ case when exProcent is not null and (exProcent >= 0) 
	       then convert(varchar(5),exProcent) else '' end 
	+ '</e><t>'
	+ case when totProcent is not null and (totProcent >= 0) 
	       then convert(varchar(5),totProcent) else '' end 
	+ '</t></vak>'
  from studiebegeleiding.dbo.r_trimesterKlasTotaal(@klas,@periode)
  
  insert into #tussen(tekst)
  values('</gemiddelde></trimLijst>')

select * from #tussen